#pragma once
#include <OgreMath.h>
#include <OgreVector3.h>
#include <OgreColourValue.h>
#include <string>
#include <map>
//class CBulletVisualData 
//{
//public:
//    CBulletVisualData() {}
//    virtual ~CBulletVisualData() {}
//
//};

class CBullet {
public:
    /// Parent ParticleSystem
    class CBarrage* mParent;
    ///// Additional visual data you might want to associate with the Particle
    //CBulletVisualData* mVisual;
public:
    CBullet();
    void update(float dt);
    std::string mAffectorName;
    enum BulletType
    {
        Visual,
        Emitter
    };
    /// Does this particle have it's own dimensions?
    bool mOwnDimensions;
    /// Personal width if mOwnDimensions == true
    Ogre::Real mWidth;
    /// Personal height if mOwnDimensions == true
    Ogre::Real mHeight;
    /// Current rotation value
    //Ogre::Radian rotation;
    float rotation;
    /// World position
    Ogre::Vector3 position;
    /// Direction (and speed) 
    Ogre::Vector3 direction;
    /// Current colour
    Ogre::ColourValue colour;
    /// Time to live, number of seconds left of particles natural life
    Ogre::Real timeToLive;
    /// Total Time to live, number of seconds of particles natural life
    Ogre::Real totalTimeToLive;
    /// Determines the type of particle.
    BulletType particleType;
    /// Speed of rotation in radians/sec
    //Ogre::Radian rotationSpeed;
    float rotationSpeed;
};

//class CBulletEmitter : public CBullet {
//
//};